首页 / 技术类 / 项目开发 / 溪流 WarKey 3.0 论坛预览版 发布,支持Lua脚本

溪流 WarKey 3.0 论坛预览版 发布,支持Lua脚本

2010-05-10 13:46:00

昨晚搞到近 2 点,终于把相关部分搞完了,放出个预览版玩玩。这一版本将支持组合键,比如,可以分别改Q、Ctrl+Q、Alt+Q 等,也将支持所有鼠标操作。此外,增加了一个脚本系统,允许用户进行更大程度上的自定义。

猛击这里下载

脚本使用 lua 语言,格式大致为(正式版出来之前可能还会有改动):

 1-----------------------------------------------------------------------------
 2-- SampleExtension.lua
 3Extension =
 4{
 5    Application = "xlWarKey", --请勿修改
 6    Version = "3.0", --请勿修改
 7    NameSpace = "http://www.streamlet.org/api/xlwarkey/3.0", --请勿修改
 8
 9    ExtensionName = "SampleExtension", --请勿修改
10    Description = "This is a sample extension.",
11
12    Configuration =
13    {
14        setting1 = --设置项1(本例不使用)
15        {
16            Type = "number",
17            Desc = "Please input an integer."
18        },
19        setting2 = --设置项2(本例不使用)
20        {
21            Type = "string",
22            Desc = "Please input a string."
23        }
24        --其他设置项
25    },
26
27    Entrance = function (id) -- 入口函数
28        -- 所有代码都请写在这里
29        return true; --必须返回 true 或者 false。返回值意义目前暂未定义。
30    end
31};
32----------------------------------------------------------------------------

目前支持的 API 有:

 1void PressKey(number vkcode [,
 2              boolean ctrl [, boolean shift [, boolean alt [, boolean win]]]])
 3
 4按下某键。
 5第一个参数为虚拟键码,也就是 Windows  VK_*,脚本里给出了一个 Keys 变量,可以直接使用 Keys.VK_*。其中 0 - 9  Keys.VK_0、……、Keys.VK_9,字母键用 Keys.VK_A、……、Keys.VK_Z
 6后面四个表示状态键是否被按下。默认 false
 7若要按下 Ctrl+1,可写成 PressKey(Keys.VK_1, true, false, false, false);
 8也可简写为 PressKey(Keys.VK_1, true)
 9
10
11void ReleaseKey(number vkcode [,
12                boolean ctrl [, boolean shift [, boolean alt [, boolean win]]]])
13
14同上,放开某键。
15
16
17void MoveMouse(number x, number y)
18
19移动鼠标到 (x, y) 位置。此坐标是相对于屏幕上最前面的那个窗口的客户区的左上角的(以后将相对于魔兽窗口)。
20
21
22void PressMouseButton(number button)
23    button: 1 - Left
24            2 - Right
25            3 - XButton1
26            4 - XButton2
27
28按下鼠标按钮
29
30 
31void ReleaseMouseButton(number button)
32    button: 1 - Left
33            2 - Right
34            3 - XButton1
35            4 - XButton2
36
37放开鼠标按钮
38
39 
40
41void MouseWheel(number button, number delta)
42     button: 1 - VWheel
43             2 - HWheel
44
45滚动鼠标滚轮
46
47
48void SetClipboard(string str)
49
50将一个字符串放到剪贴板
51
52
53string AnsiToUtf8(string ansi)
54
55 Ansi 字符串转换为 UTF-8
56
57
58width, height GetClientSize()
59
60取客户区大小。目前是取屏幕上最前面的那个窗口的客户区的大小(以后将会是魔兽窗口的大小)。
61
62
63x, y GetCursorPosition()
64
65取鼠标光标当前位置。此坐标是相对于屏幕上最前面的那个窗口的客户区的左上角的(以后将相对于魔兽窗口)。
66
67
68void Delay(number milliseconds)
69
70等待一段时间,参数的单位是毫秒。

上面附件中的示例脚本实现了一次性扔掉物品栏所有物品的功能。请打开魔兽,然后按 Alt+1 来看效果。

论坛相应主题:http://forum.streamlet.org/thread-236-1-1.html

介绍到此结束。

最后,如果有兴趣的,希望探讨下,目前的脚本格式定义是否合理,API 设置是否合理,脚本安全性如何控制,等等。

欢迎在下面评论中跟帖。


首发:http://www.cppblog.com/Streamlet/archive/2010/05/10/114988.html



NoteIsSite/0.4